FileInputStream এবং FileOutputStream ব্যবস্থাপনা

Java Technologies - অ্যাপাচি কমন্স আইও (Apache Common IO) File Streams ব্যবস্থাপনা |
158
158

Apache Commons IO লাইব্রেরি InputStream এবং OutputStream এর কাজগুলোকে আরও সহজ, কার্যকরী এবং নিরাপদ করে তোলে। FileInputStream এবং FileOutputStream স্ট্যান্ডার্ড Java API এর অংশ হলেও, Apache Commons IO লাইব্রেরি ফাইল এবং স্ট্রিম সম্পর্কিত কাজগুলো সহজ এবং দ্রুত করতে অনেক সাহায্য করে। এতে IOUtils ক্লাসের মাধ্যমে ফাইল স্ট্রিমের কার্যকর ব্যবস্থাপনা করা সম্ভব।

FileInputStream এবং FileOutputStream এর কাজ

  • FileInputStream: ফাইল থেকে ডেটা পড়তে ব্যবহৃত হয়।
  • FileOutputStream: ফাইলে ডেটা লেখার জন্য ব্যবহৃত হয়।

Apache Commons IO লাইব্রেরি ব্যবহার করে আপনি এই স্ট্রিমগুলির সাথে কাজ করার সময় কোড কমপ্লেক্সিটি কমাতে পারেন, এবং স্ট্রিম পরিচালনা আরও সহজ করতে পারেন।


1. FileInputStream এবং FileOutputStream ব্যবহার করা

ধরা যাক, আমাদের একটি ফাইল থেকে ডেটা পড়তে হবে এবং অন্য একটি ফাইলে ডেটা লিখতে হবে। Apache Commons IO লাইব্রেরি ফাইল কপি করার সময় পারফরম্যান্স অপটিমাইজেশন এবং সহজ ব্যবস্থাপনা সরবরাহ করে।

FileInputStream এবং FileOutputStream এর মাধ্যমে ফাইল কপি করা

import org.apache.commons.io.IOUtils;

import java.io.*;

public class FileStreamExample {
    public static void main(String[] args) {
        InputStream inputStream = null;
        OutputStream outputStream = null;

        try {
            // ফাইলের InputStream তৈরি
            inputStream = new FileInputStream("source.txt");

            // OutputStream তৈরি
            outputStream = new FileOutputStream("destination.txt");

            // FileInputStream থেকে FileOutputStream এ কপি করা
            IOUtils.copy(inputStream, outputStream);

            System.out.println("ফাইল কপি করা হয়েছে!");

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                // স্ট্রিম বন্ধ করা
                if (inputStream != null) inputStream.close();
                if (outputStream != null) outputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

ব্যাখ্যা:

  • IOUtils.copy(inputStream, outputStream): এটি InputStream থেকে OutputStream এ ডেটা কপি করে।
  • FileInputStream এবং FileOutputStream এর মাধ্যমে ফাইল থেকে ডেটা পড়ে এবং অন্য ফাইলে লিখে।
  • try-catch-finally ব্লক ব্যবহার করা হয়েছে কারণ স্ট্রিম ব্যবহারের সময় IOException হতে পারে এবং স্ট্রিম বন্ধ করতে হবে।

Output:

ফাইল কপি করা হয়েছে!

2. FileInputStream এবং FileOutputStream এর সঙ্গে BufferedStream ব্যবহার

যখন আপনি বড় ফাইল বা ডেটা স্ট্রিমের সাথে কাজ করেন, তখন স্ট্রিমের গতি বাড়াতে BufferedInputStream এবং BufferedOutputStream ব্যবহার করা যায়। এটি স্ট্রিমের পারফরম্যান্স উন্নত করতে সাহায্য করে।

BufferedInputStream এবং BufferedOutputStream এর সাথে ফাইল কপি করা

import org.apache.commons.io.IOUtils;

import java.io.*;

public class BufferedStreamExample {
    public static void main(String[] args) {
        InputStream inputStream = null;
        OutputStream outputStream = null;

        try {
            // BufferedInputStream তৈরি
            inputStream = new BufferedInputStream(new FileInputStream("source.txt"));

            // BufferedOutputStream তৈরি
            outputStream = new BufferedOutputStream(new FileOutputStream("destination.txt"));

            // BufferedInputStream থেকে BufferedOutputStream এ কপি করা
            IOUtils.copy(inputStream, outputStream);

            System.out.println("ফাইল কপি করা হয়েছে!");

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                // স্ট্রিম বন্ধ করা
                if (inputStream != null) inputStream.close();
                if (outputStream != null) outputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

ব্যাখ্যা:

  • BufferedInputStream এবং BufferedOutputStream স্ট্রিমের গতি বাড়ানোর জন্য বাফারিং ব্যবহার করে। এটি বড় ডেটা কপি করার সময় পারফরম্যান্স অনেক বাড়ায়।
  • IOUtils.copy() ব্যবহার করে সহজেই ডেটা কপি করা হয়।

Output:

ফাইল কপি করা হয়েছে!

3. FileInputStream এবং FileOutputStream ব্যবস্থাপনা (Error Handling and Closing Streams)

স্ট্রিম ব্যবহারের সময়, স্ট্রিম বন্ধ করার ব্যাপারে সতর্ক থাকতে হবে, কারণ যদি আপনি স্ট্রিম বন্ধ না করেন, তা হলে রিসোর্স লিক হতে পারে। Apache Commons IO লাইব্রেরি IOUtils.closeQuietly() মেথড সরবরাহ করে, যার মাধ্যমে আপনি স্ট্রিমগুলো নিরাপদে বন্ধ করতে পারেন এবং কোনো এক্সেপশন ফেলে না।

IOUtils.closeQuietly() ব্যবহার করা

import org.apache.commons.io.IOUtils;

import java.io.*;

public class StreamManagementExample {
    public static void main(String[] args) {
        InputStream inputStream = null;
        OutputStream outputStream = null;

        try {
            // FileInputStream তৈরি
            inputStream = new FileInputStream("source.txt");

            // FileOutputStream তৈরি
            outputStream = new FileOutputStream("destination.txt");

            // FileInputStream থেকে FileOutputStream এ কপি করা
            IOUtils.copy(inputStream, outputStream);

            System.out.println("ফাইল কপি করা হয়েছে!");

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // স্ট্রিম সাইলেন্টলি বন্ধ করা
            IOUtils.closeQuietly(inputStream);
            IOUtils.closeQuietly(outputStream);
        }
    }
}

ব্যাখ্যা:

  • IOUtils.closeQuietly(inputStream) এবং IOUtils.closeQuietly(outputStream) মেথডগুলি স্ট্রিমগুলো সাইলেন্টলি (নিরবভাবে) বন্ধ করে, অর্থাৎ কোনো এক্সেপশন ছুড়ে ফেলা হবে না।
  • try-catch-finally ব্লকের মধ্যে এই স্ট্রিমগুলো নিরাপদে ব্যবস্থাপনা করা হচ্ছে।

Output:

ফাইল কপি করা হয়েছে!

4. FileInputStream এবং FileOutputStream এর সাথে Exception Handling

ফাইল স্ট্রিম ব্যবহারের সময় IOException হতে পারে, যেমন যদি ফাইলটি খোলা না যায় বা লেখার অনুমতি না থাকে। তাই সঠিক exception handling জরুরি।

Exception Handling Example

import org.apache.commons.io.IOUtils;

import java.io.*;

public class ExceptionHandlingExample {
    public static void main(String[] args) {
        InputStream inputStream = null;
        OutputStream outputStream = null;

        try {
            // ফাইল ইনপুট স্ট্রিম
            inputStream = new FileInputStream("source.txt");

            // ফাইল আউটপুট স্ট্রিম
            outputStream = new FileOutputStream("destination.txt");

            // ফাইল কপি করা
            IOUtils.copy(inputStream, outputStream);

        } catch (FileNotFoundException e) {
            System.err.println("ফাইল পাওয়া যায়নি: " + e.getMessage());
        } catch (IOException e) {
            System.err.println("IO ত্রুটি ঘটেছে: " + e.getMessage());
        } finally {
            // স্ট্রিম বন্ধ করা
            try {
                if (inputStream != null) inputStream.close();
                if (outputStream != null) outputStream.close();
            } catch (IOException e) {
                System.err.println("স্ট্রিম বন্ধ করতে সমস্যা হয়েছে: " + e.getMessage());
            }
        }
    }
}

ব্যাখ্যা:

  • FileNotFoundException এবং IOException এর জন্য আলাদা আলাদা catch ব্লক ব্যবহৃত হয়েছে।
  • স্ট্রিম ব্যবহারের পরে finally ব্লক ব্যবহার করে স্ট্রিম বন্ধ করা হয়েছে।

Output:

ফাইল কপি করা হয়েছে!

Apache Commons IO লাইব্রেরি FileInputStream এবং FileOutputStream ব্যবস্থাপনায় সাহায্য করে এবং কোড লেখার সময় পারফরম্যান্স অপটিমাইজেশন এবং সহজ ব্যবস্থাপনা সরবরাহ করে। IOUtils ক্লাসের মাধ্যমে InputStream এবং OutputStream এর মধ্যে ডেটা কপি করার জন্য সহজ উপায় পাওয়া যায়, এবং স্ট্রিম বন্ধ করার জন্য closeQuietly() মেথডটি ব্যবহার করা যায়। এতে ফাইল স্ট্রিম ব্যবস্থাপনা সহজ, কার্যকরী এবং নিরাপদ হয়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion